#pragma once

#include "IScene.h"
#include "..\RenderEngineUtils\Camera.h"
#include "Blur.h"
#include "Managers.h"
#include "DepthTexture.h"

class Scene02 : public IScene
{
private:
	Managers *managers;

	Model *courtyard;
	Model *skybox;

	Animation *anim;

	Camera *scena2camera1;
	Camera *scena2camera2;
	Camera *scena2camera3;
	Camera *scena2camera4;
	Camera *scena2camera5;

	Camera *currentCam;

	Shader *vpSpecular;
	Shader *fpSpecular;
	Shader *vpDof;
	Shader *fpDof;
	Shader *vpBlur;
	Shader *fpBlur;

	Framebuffer *framebuffer;
	Texture *orTexture;
	DepthTexture *orDepthTexture;
	Blur *blur;

	float lights[3 * 17];
	float lightsTargets[3 * 17];

	float idm[16];
	CGparameter modelMatrix;

	CGparameter cgpSpotLightPos;
	CGparameter cgpSpotLightTargetPos;
	CGparameter cgpFade;

	float fade;
	float fadeMod;

	void SetLights();
	void SetAnimation();

public:
	Scene02(Managers *managers);
	~Scene02(void);

	void Initialize();

	void Prepare();
	void Render(float ms);
	void Notify(float time, const char *type, const char *value);
};
